package com.mars.push.api.dto;

import com.mars.push.api.common.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.List;
import java.util.Map;

/**
 * @Author King
 * @create 2020/7/9 17:44
 */
@Data
@ApiModel(value = "推送服务的接口参数")
@Accessors(chain = true)
public class PushMessageInput implements MessageInput {


    public PushMessageInput() {
        this.contentAvailable = false;
    }

    /**
     * 通知类型 0:tag 1:alias 2: 注册ID 3：通知所有注册的设备
     */
    @ApiModelProperty(value = "通知类型 0:tag 1:alias 2: 注册ID 3:通知所有注册的设备")
    private NoticeType noticeType;


    /**
     * 推送消息类型 0:通知栏 1:自定义消息 2: 两者同时
     */
    @ApiModelProperty(value = "推送消息类型 0:通知栏 1:自定义消息 2: 两者同时")
    private PushMessageType pushMessageType;

    /**
     * 推送目标
     */
    @ApiModelProperty(value = "推送目标")
    private List<String> targets;

    /**
     * 通知栏消息
     */
    @ApiModelProperty(value = "通知栏的信息")
    private String alert;

    /**
     * 通知栏标题
     */
    @ApiModelProperty(value = "通知栏标题")
    private String title;

    /**
     * url
     */
    @ApiModelProperty(value = "url")
    private String url;

    /**
     * 透传消息
     */
    @ApiModelProperty(value = "通知栏方式的透传消息")
    private Map<String, String> extras;

    /**
     * 自定义消息
     */
    @ApiModelProperty(value = "自定义消息")
    private String customerMessage;

    /**
     * 自定义透传消息
     */
    @ApiModelProperty(value = "自定义透传消息")
    private Map<String, String> customerMessageExtras;

    /**
     * 推送设备类型 0:android 1:Ios 2:all
     */
    @ApiModelProperty(value = "推送设备类型 0:android 1:Ios 2:all")
    private DeviceType deviceType;

    /**
     * 0:极光推送 1：fileBase 不填默认是极光
     */
    @ApiModelProperty(value = "0:极光推送 1:fireBase 不填默认是极光")
    private PushType pushType;

    @ApiModelProperty(value = "业务类型，业务端可以把自己定义的业务标识传过来，后续可以做业务收敛统计")
    private String businessType;

    /**
     * IOS的声音文件
     */
    @ApiModelProperty(value = "IOS的声音文件")
    private String sound;

    private String badge;

    private String threadId;

    private Map<String, String> voIp;

    private String contentType;

    private int builderId;

    private String largeIcon;

    private boolean contentAvailable;




}
